/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package account;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 *
 * @author Administrator
 */
public interface AccountInterface {

    /**
     * This method is used to get user alternative mail
     * @return user alternative mail
     */
    String getAlternativeMail();

    /**
     * This method is used to get user birth date
     * @return user birth date
     */
    Date getBirthday();

    /**
     * This method is used to get user's city
     * @return user's sity
     */
    String getCity();

    /**
     * This method is used to get user's country
     * @return user's country
     */
    String getCountry();

    /**
     * This method is used to get user first name
     * @return user first name
     */
    String getFirstName();

    /**
     * This method is used to get user gebder
     * @return user gebder
     */
    String getGender();

    /**
     * This method is used to get user last name
     * @return user last name
     */
    String getLastName();

    /**
     * This method is used to get user password
     * @return user password
     */
    String getPassword();

    /**
     * This method is used to get postal code
     * @return postal code
     */
    String getPostalCode();

    /**
     * This method is used to get user question answer
     * @return question answer
     */
    String getQnAnswer();

    /**
     * This method is used to user security question answer
     * @return security question answer
     */
    String getSecurityQn();

    /**
     * This method is used to get userName
     * @return userName
     */
    String getUserName();

    /**
     * This method is used to read account file
     * @param user acount file
     * @throws java.io.IOException
     */
    void readAccountData(File user) throws IOException;

    /**
     * This method is used to set all account data
     * this method is used when account data are read from account file
     * @param s array of account data
     */
    void setAllAccountData(String[] s);

    /**
     * This method is used to set user alternative mail
     * @param alternativeMail new user alternative mail
     */
    void setAlternativeMail(String alternativeMail);

    /**
     * This method is used to set user birth date
     * @param birthday new user birth date
     */
    void setBirthday(Date birthday);

    /**
     * This method is used to set user's city
     * @param city new user's city
     */
    void setCity(String city);

    /**
     * This method is used to set user's country
     * @param country new user's country
     */
    void setCountry(String country);

    /**
     * This method is used to set user first name
     * @param firstName new user first name
     */
    void setFirstName(String firstName);

    /**
     * This method is used to set user gender
     * @param gender new user gender
     */
    void setGender(String gender);

    /**
     * This method is used to set last name
     * @param lastName new user last name
     */
    void setLastName(String lastName);

    /**
     * This method is used to set user password
     * @param password new user password
     */
    void setPassword(String password);

    /**
     * This method is used to set user postal code
     * @param postalCode new user postal code
     */
    void setPostalCode(String postalCode);

    /**
     * This method is used to set user security question answer
     * @param qnAnswer new security question answer
     */
    void setQnAnswer(String qnAnswer);

    /**
     * This method is used to set security question
     * @param securityQn new security question
     */
    void setSecurityQn(String securityQn);

    /**
     * This method is used to set userName
     * @param userName new userName
     */
    void setUserName(String userName);

    /**
     * This method is used to write account file
     * @param user parent folder which contains this account file (i.e user folder)
     * @throws java.io.IOException
     */
    void writeAccountData(File user) throws IOException;

}
